home *** CD-ROM | disk | FTP | other *** search
/ Sentfactor Photo-CD Access / Sentfactor Photo-CD Access.iso / photo_cd.ms_ / photo_cd.ms
Text File  |  1994-06-21  |  12KB  |  471 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9. '$INCLUDE 'msregdb.inc'
  10. '$INCLUDE 'msshared.inc'
  11.  
  12.  
  13. ''Dialog ID's
  14. CONST EDRIVE        = 1000
  15. CONST GDRIVE        = 1300
  16. CONST OPTIONS       = 800
  17. CONST BADG          = 1600
  18. CONST BADE          = 1800
  19. CONST ASKQUIT       = 200
  20. CONST APPHELP       = 900
  21. CONST EXITE         = 2000
  22. CONST EXITG         = 2200
  23. CONST QUITE         = 2300
  24. CONST QUITG         = 2700
  25. CONST FAILE         = 2800
  26. CONST FAILG         = 3000
  27. CONST ASKG          = 3100  
  28. CONST ASKE          =  600 
  29. CONST GETORGG       = 7700
  30. CONST GETORGE       = 7500
  31. CONST TOOBIGG       = 5300
  32. CONST TOOBIGE       = 6300
  33. CONST USEDG         = 3300   
  34. CONST USEDE         = 1900
  35.  
  36. ''Bitmap ID
  37. CONST LOGO = 1
  38.  
  39. GLOBAL DEST$        ''Default destination directory.
  40. GLOBAL OPTCUR$      ''Option selection from option dialog.
  41. GLOBAL NAM$         ''User Name
  42. GLOBAL FIRM$        ''Company Name
  43. GLOBAL WINDRIVE$    ''Windows Drive Letter VFW
  44.  
  45.  
  46. SrcDir$ = GetSymbolValue("STF_SRCDIR")
  47. WinDir$ = GetWindowsDir()
  48. WinSysDir$ = GetWindowSSysDir()
  49.  
  50. DECLARE SUB Install
  51. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  52.  
  53.  
  54. INIT:
  55.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  56.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  57.  
  58.     MajorVer% = GetWindowsMajorVersion()
  59.     MinorVer% = GetWindowsMinorVersion()
  60.     
  61.     IF  MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  62.     i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  63.         END
  64.     END IF
  65.  
  66.     SetBitmap CUIDLL$, LOGO
  67.     SetTitle "Sentfactor Photo-CD Access Setup"
  68.  
  69.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  70.     IF szInf$ = "" THEN
  71.         szInf$ = GetSymbolValue("STF_CWDDIR") + "PHOTO_CD.INF"
  72.     END IF
  73.     ReadInfFile szInf$
  74.  
  75.     OPTCUR$ = "1"
  76.     DEST$ = "C:\SENTFACT"
  77.     WINDRIVE$ = MID$(WinDir$, 1, 1)
  78.     
  79.  
  80. '$IFDEF DEBUG
  81.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  82.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  83.     IF IsDriveValid(WinDrive$) = 0 THEN
  84.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  85.         GOTO QUIT
  86.     END IF
  87. '$ENDIF ''DEBUG
  88.  
  89.  
  90. OPTION:
  91.     SetSymbolValue "RadioDefault", OPTCUR$
  92. OPTL1:
  93.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  94.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  95.  
  96.  
  97.     IF sz$ = "CONTINUE" THEN
  98.         UIPop(1)
  99.         IF OPTCUR$ = "1" THEN    '' Deutsch
  100.            GOTO G_SIZE
  101.         ELSE
  102.                 IF OPTCUR$ = "2" THEN       '' English
  103.                         GOTO E_SIZE
  104.                 END IF
  105.         END IF
  106.    
  107.     ELSE
  108.         GOSUB ASKQUIT
  109.         GOTO OPTION
  110.     END IF
  111.  
  112. G_SIZE:
  113.  
  114.        WantedDiskSize&=3900000
  115.        
  116.        DiskSize&=GetFreeSpaceForDrive(WINDRIVE$)
  117.        
  118.        If WantedDiskSpace& > DiskSize& THEN
  119.           GOSUB TOOBIG_G
  120.           ERROR STFQUIT
  121.        EndIf   
  122.  
  123.        GOTO G_DRIVE
  124.           
  125. E_SIZE:
  126.  
  127.         WantedDiskSize&=3900000
  128.        
  129.        DiskSize&=GetFreeSpaceForDrive(WINDRIVE$)
  130.        
  131.        If WantedDiskSpace& > DiskSize& THEN
  132.           GOSUB TOOBIG_E
  133.           ERROR STFQUIT
  134.        EndIf 
  135.     
  136.        GOTO E_DRIVE
  137.        
  138. G_DRIVE:
  139.     SetSymbolValue "EditTextIn", DEST$
  140.     SetSymbolValue "EditFocus", "END"
  141.  
  142. G_DRIVE1:       
  143.     sz$ = UIStartDlg(CUIDLL$, GDRIVE, "FEditDlgProc", APPHELP, HELPPROC$)
  144.     DEST$ = GetSymbolValue("EditTextOut")
  145.  
  146.     IF sz$ = "CONTINUE" THEN
  147.         IF IsDirWritable(DEST$) = 0 THEN
  148.             GOSUB BAD_G
  149.             GOTO G_DRIVE1
  150.         END IF
  151.  
  152.         UIPop 1
  153.         GOTO GETORG_G
  154.     
  155.     ELSE
  156.         GOSUB ASK_G
  157.         GOTO G_DRIVE
  158.     END IF
  159.  
  160.  
  161. E_DRIVE:
  162.     SetSymbolValue "EditTextIn", DEST$
  163.     SetSymbolValue "EditFocus", "END"
  164.  
  165. E_DRIVE1:
  166.     sz$ = UIStartDlg(CUIDLL$, EDRIVE, "FEditDlgProc", APPHELP, HELPPROC$)
  167.     DEST$ = GetSymbolValue("EditTextOut")
  168.  
  169.     IF sz$ = "CONTINUE" THEN
  170.         IF IsDirWritable(DEST$) = 0 THEN
  171.             GOSUB BAD_E
  172.             GOTO E_DRIVE1
  173.         END IF
  174.  
  175.         UIPop 1
  176.         GOTO GETORG_E
  177.  
  178.     ELSE
  179.         GOSUB ASK_E
  180.         GOTO E_DRIVE
  181.     END IF
  182.     
  183. GETORG_G:
  184.  
  185.     sz$ = UIStartDlg(CUIDLL$, GETORGG, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  186.     NAM$ = GetSymbolValue("NameOut")
  187.     FIRM$ = GetSymbolValue("OrgOut")
  188.     
  189.     IF sz$ = "CONTINUE" THEN
  190.            IF NAM$ = "" THEN
  191.                    i% = DoMsgBox("Bitte geben Sie Ihren Namen ein !", "Setup Meldung", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  192.                     GOTO GETORG_G
  193.            ELSEIF FIRM$ = "" THEN
  194.                    i% = DoMsgBox("Bitte geben Sie Ihren Firmennamen oder Ihren persönlichen Namen ein !", "Setup Meldung", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  195.                    GOTO GETORG_G
  196.            END IF                          
  197.            UIPop 1
  198.            GOTO INSTALL_B
  199.     ELSE
  200.    
  201.           GOSUB ASK_G
  202.           GOTO GETORG_G
  203.     END IF        
  204.    
  205.  
  206.  
  207. GETORG_E:
  208.  
  209. sz$ = UIStartDlg(CUIDLL$, GETORGE, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  210.      NAM$ = GetSymbolValue("NameOut")
  211.      FIRM$ = GetSymbolValue("OrgOut")
  212.      
  213.      IF sz$ = "CONTINUE" THEN
  214.      
  215.             IF NAM$ = "" THEN
  216.                      i% = DoMsgBox("Please fill in your full name.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  217.                       GOTO GETORG_E
  218.             ELSEIF FIRM$ = "" THEN
  219.                      i% = DoMsgBox("Please fill in either your company name or your last name", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  220.                      GOTO GETORG_E
  221.             END IF                          
  222.             
  223.        UIPop 1
  224.        GOTO INSTALL_B
  225.  
  226.      ELSE
  227.          GOSUB ASK_E
  228.          GOTO GETORG_E
  229.     ENDIF         
  230.  
  231.  
  232. INSTALL_B:
  233.  
  234.          Install
  235.     
  236.         
  237.          
  238. QUIT:
  239.     ON ERROR GOTO ERRQUIT
  240.  
  241.     IF ERR = 0 THEN
  242.                       IF OPTCUR$ = "1" THEN
  243.                              
  244.                              dlg% = EXITG
  245.                       ELSE
  246.                       
  247.                       IF OPTCUR$ = "2" THEN
  248.                       
  249.                              dlg% = EXITE
  250.                       END IF
  251.                       END IF
  252.                       
  253.     ELSEIF ERR = STFQUIT THEN
  254.                       
  255.                       IF OPTCUR$ = "1" THEN
  256.                              
  257.                              dlg% = QUITG
  258.                       ELSE
  259.                       
  260.                       IF OPTCUR$ = "2" THEN
  261.                       
  262.                              dlg% = QUITE
  263.                       END IF
  264.                       END IF
  265.  
  266.     ELSE
  267.                       IF OPTCUR$ = "1" THEN
  268.                              
  269.                              dlg% = FAILG
  270.                       ELSE
  271.                       
  272.                       IF OPTCUR$ = "2" THEN
  273.                       
  274.                              dlg% = FAILE
  275.                       END IF
  276.                       END IF
  277.  
  278.     END IF
  279.     
  280. QUITL1:
  281.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  282.     IF sz$ = "REACTIVATE" THEN
  283.         GOTO QUITL1
  284.     END IF
  285.     UIPop 1
  286.  
  287.     END
  288.  
  289. ERRQUIT:
  290.     
  291.         IF OPTCUR$ = "1" THEN
  292.  
  293.                 i% = DoMsgBox("Setup Quelle defekt, bitte nehmen Sie mit Sentfactor Limited Kontakt auf.", "Setup Meldung", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  294.     
  295.         ELSE
  296.  
  297.          IF OPTCUR$ = "2" THEN
  298.            
  299.                 i% = DoMsgBox("Setup sources were corrupted, please contact Sentfactor Limited.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  300.     END IF
  301.  
  302.     END IF
  303. END
  304.  
  305. BAD_G:
  306.  
  307.     sz$ = UIStartDlg(CUIDLL$, BADG, "FInfo0DlgProc", 0, "")
  308.     IF sz$ = "REACTIVATE" THEN
  309.         GOTO BAD_G
  310.     END IF
  311.     UIPop 1
  312.     RETURN
  313.  
  314. BAD_E:
  315.  
  316.     sz$ = UIStartDlg(CUIDLL$, BADE, "FInfo0DlgProc", 0, "")
  317.     IF sz$ = "REACTIVATE" THEN
  318.         GOTO BAD_E
  319.     END IF
  320.     UIPop 1
  321.     RETURN
  322.     
  323. TOOBIG_G:
  324.  
  325.     SZ$ = UIStartDlg(CUIDLL$, TOOBIGG, "FInfo0DlgProc", 0, "")
  326.     IF sz$ = "REACTIVATE" THEN
  327.         GOTO TOOBIG_G
  328.     END IF
  329.     UIPop 1
  330.     RETURN
  331.  
  332.  TOOBIG_E:
  333.  
  334.     SZ$ = UIStartDlg(CUIDLL$, TOOBIGE, "FInfo0DlgProc", 0, "")
  335.     IF sz$ = "REACTIVATE" THEN
  336.         GOTO TOOBIG_E
  337.     END IF
  338.     UIPop 1
  339.     RETURN
  340.     
  341. ASKQUIT:
  342.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  343.  
  344.     IF sz$ = "EXIT" THEN
  345.         UIPopAll
  346.         ERROR STFQUIT
  347.     ELSEIF sz$ = "REACTIVATE" THEN
  348.         GOTO ASKQUIT
  349.     ELSE
  350.         UIPop 1
  351.     END IF
  352.     RETURN
  353.  
  354.  
  355. ASK_G:
  356.     sz$ = UIStartDlg(CUIDLL$, ASKG, "FQuitDlgProc", 0, "")
  357.  
  358.     IF sz$ = "EXIT" THEN
  359.         UIPopAll
  360.         ERROR STFQUIT
  361.     ELSEIF sz$ = "REACTIVATE" THEN
  362.         GOTO ASK_G
  363.     ELSE
  364.         UIPop 1
  365.     END IF
  366.     RETURN
  367.     
  368. ASK_E:
  369.     sz$ = UIStartDlg(CUIDLL$, ASKE, "FQuitDlgProc", 0, "")
  370.  
  371.     IF sz$ = "EXIT" THEN
  372.         UIPopAll
  373.         ERROR STFQUIT
  374.     ELSEIF sz$ = "REACTIVATE" THEN
  375.         GOTO ASK_E
  376.     ELSE
  377.         UIPop 1
  378.     END IF
  379.     RETURN
  380.  
  381. '**
  382. '** Purpose:
  383. '**     Builds the copy list and performs all installation operations.
  384. '** Arguments:
  385. '**     none.
  386. '** Returns:
  387. '**     none.
  388. '*************************************************************************
  389. SUB Install STATIC
  390.  
  391.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  392.     WinDir$ = GetWindowsDir()
  393.     WinSysDir$ = GetWindowSSysDir()
  394.  
  395.     CreateDir DEST$, cmoNone
  396.  
  397.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  398.     WriteToLogFile ""
  399.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  400.     WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  401.     WriteToLogFile ""
  402.     WriteToLogFile "May have had to create the directory: " + DEST$
  403.     WriteToLogFile ""
  404.     WriteToLogFile " STF_SRCDIR " + SrcDir$ + WinDir$
  405.     WriteToLogFile ""
  406.  
  407.  
  408.  
  409.  
  410.     AddSectionFilesToCopyList "Common", SrcDir$, DEST$
  411.  
  412.     IF OPTCUR$ = "1" THEN
  413.     
  414.                 AddSectionKeyFileToCopyList "Options", OPTCUR$, SrcDir$, DEST$
  415.     ELSE
  416.                 AddSectionKeyFileToCopyList "Options", OPTCUR$, SrcDir$, DEST$
  417.     ENDIF
  418.     
  419.     CopyFilesInCopyList
  420.  
  421. ''Updating WIN.INI and SYSTEM.INI
  422.         CreateIniKeyValue WinDir$ + "WIN.INI", "windows", "firm", firm$, cmoOverwrite
  423.         CreateIniKeyValue WinDir$ + "WIN.INI", "windows", "username", nam$, cmoOverwrite
  424.         CreateIniKeyValue DEST$ + "\SENTFACT.INI", "userdata", "firm", firm$, cmoOverwrite
  425.         CreateIniKeyValue DEST$ + "\SENTFACT.INI", "userdata", "username", nam$, cmoOverwrite
  426.  
  427.  
  428.  
  429.  
  430.     CreateProgmanGroup "Sentfactor", "", cmoNone
  431.     ShowProgmanGroup  "Sentfactor", 1, cmoNone
  432.     CreateProgmanItem "Sentfactor", "Sentfactor Photo-CD Access", MakePath(DEST$,"photo_cd.exe"), "", cmoOverwrite
  433.  
  434.     
  435.  
  436.     
  437.     CloseLogFile
  438.  
  439. END SUB
  440.  
  441.  
  442.  
  443. '**
  444. '** Purpose:
  445. '**     Appends a file name to the end of a directory path,
  446. '**     inserting a backslash character as needed.
  447. '** Arguments:
  448. '**     szDir$  - full directory path (with optional ending "\")
  449. '**     szFile$ - filename to append to directory
  450. '** Returns:
  451. '**     Resulting fully qualified path name.
  452. '*************************************************************************
  453. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  454.     IF szDir$ = "" THEN
  455.         MakePath = szFile$
  456.     ELSEIF szFile$ = "" THEN
  457.         MakePath = szDir$
  458.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  459.         MakePath = szDir$ + szFile$
  460.     ELSE
  461.         MakePath = szDir$ + "\" + szFile$
  462.     END IF
  463. END FUNCTION
  464.  
  465. 
  466. 
  467. 
  468.  
  469. 
  470. 
  471.